// 快速幂算法
var myPow = function (x, n) {
  if (n == 0) return 1;
  if (n < 0) return 1 / myPow(x, -n);
  if (n % 2) return x * myPow(x, n - 1);
  return myPow(x * x, n / 2);
}


// 二进制
var myPow = function (x, n) {
  if (n < 0) {
    x = 1 / x;
    n = -n;
  }
  let ans = 1;
  while (n) {
    // 判断 n 的二进制最后一位是否是 1，如果是 1 则将结果乘以 x
    if (n & 1) ans *= x;
    x *= x;
    // 进行无符号右移一位
    // 当 n 位 -2^31 转换成正数时的二级制位 10000000000000000000000000000000
    // 如果采用有符号右移一位，会取最左侧的符号当符号位，返回的结果 -1073741824
    n >>>= 1;
  }
  return ans;
}